{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "78c66dd7-789d-4a60-8c19-9ddb37575354",
   "metadata": {},
   "source": [
    "# 主成分分析（PCA）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "a72b7316-25ac-4804-a09e-cd123b3fd0ab",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd \n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "0642d1f0-ea2b-4fdf-a3f5-087c1833a021",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "# 导入sklearn自带的iris数据集\n",
    "iris = datasets.load_iris()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7800ee53-64a2-4bc7-a605-c2aa3b370828",
   "metadata": {},
   "source": [
    "## 手动数据标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "5a8bd846-49b0-4541-95ac-f4dea4095ed7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.1, 4.9, 4.7, 4.6, 5. , 5.4, 4.6, 5. , 4.4, 4.9, 5.4, 4.8, 4.8,\n",
       "       4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1, 5.4, 5.1, 4.6, 5.1, 4.8, 5. ,\n",
       "       5. , 5.2, 5.2, 4.7, 4.8, 5.4, 5.2, 5.5, 4.9, 5. , 5.5, 4.9, 4.4,\n",
       "       5.1, 5. , 4.5, 4.4, 5. , 5.1, 4.8, 5.1, 4.6, 5.3, 5. , 7. , 6.4,\n",
       "       6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6, 5.2, 5. , 5.9, 6. , 6.1, 5.6,\n",
       "       6.7, 5.6, 5.8, 6.2, 5.6, 5.9, 6.1, 6.3, 6.1, 6.4, 6.6, 6.8, 6.7,\n",
       "       6. , 5.7, 5.5, 5.5, 5.8, 6. , 5.4, 6. , 6.7, 6.3, 5.6, 5.5, 5.5,\n",
       "       6.1, 5.8, 5. , 5.6, 5.7, 5.7, 6.2, 5.1, 5.7, 6.3, 5.8, 7.1, 6.3,\n",
       "       6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6.8, 5.7, 5.8, 6.4, 6.5,\n",
       "       7.7, 7.7, 6. , 6.9, 5.6, 7.7, 6.3, 6.7, 7.2, 6.2, 6.1, 6.4, 7.2,\n",
       "       7.4, 7.9, 6.4, 6.3, 6.1, 7.7, 6.3, 6.4, 6. , 6.9, 6.7, 6.9, 5.8,\n",
       "       6.8, 6.7, 6.7, 6.3, 6.5, 6.2, 5.9])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 拿出第一列\n",
    "dat=iris['data'][:,0]\n",
    "dat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "b0eb1a03-cc70-472d-a566-146502a33240",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.843333333333334"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean=dat.mean()\n",
    "mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "df06f4ed-6b34-42ee-945f-8fdbb9be10e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8253012917851409"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "std=dat.std()\n",
    "std"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "fd571a18-f1ce-42b2-b830-c5475b4c7ea1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.90068117, -1.14301691, -1.38535265, -1.50652052, -1.02184904,\n",
       "       -0.53717756, -1.50652052, -1.02184904, -1.74885626, -1.14301691,\n",
       "       -0.53717756, -1.26418478, -1.26418478, -1.87002413, -0.05250608,\n",
       "       -0.17367395, -0.53717756, -0.90068117, -0.17367395, -0.90068117,\n",
       "       -0.53717756, -0.90068117, -1.50652052, -0.90068117, -1.26418478,\n",
       "       -1.02184904, -1.02184904, -0.7795133 , -0.7795133 , -1.38535265,\n",
       "       -1.26418478, -0.53717756, -0.7795133 , -0.41600969, -1.14301691,\n",
       "       -1.02184904, -0.41600969, -1.14301691, -1.74885626, -0.90068117,\n",
       "       -1.02184904, -1.62768839, -1.74885626, -1.02184904, -0.90068117,\n",
       "       -1.26418478, -0.90068117, -1.50652052, -0.65834543, -1.02184904,\n",
       "        1.40150837,  0.67450115,  1.2803405 , -0.41600969,  0.79566902,\n",
       "       -0.17367395,  0.55333328, -1.14301691,  0.91683689, -0.7795133 ,\n",
       "       -1.02184904,  0.06866179,  0.18982966,  0.31099753, -0.29484182,\n",
       "        1.03800476, -0.29484182, -0.05250608,  0.4321654 , -0.29484182,\n",
       "        0.06866179,  0.31099753,  0.55333328,  0.31099753,  0.67450115,\n",
       "        0.91683689,  1.15917263,  1.03800476,  0.18982966, -0.17367395,\n",
       "       -0.41600969, -0.41600969, -0.05250608,  0.18982966, -0.53717756,\n",
       "        0.18982966,  1.03800476,  0.55333328, -0.29484182, -0.41600969,\n",
       "       -0.41600969,  0.31099753, -0.05250608, -1.02184904, -0.29484182,\n",
       "       -0.17367395, -0.17367395,  0.4321654 , -0.90068117, -0.17367395,\n",
       "        0.55333328, -0.05250608,  1.52267624,  0.55333328,  0.79566902,\n",
       "        2.12851559, -1.14301691,  1.76501198,  1.03800476,  1.64384411,\n",
       "        0.79566902,  0.67450115,  1.15917263, -0.17367395, -0.05250608,\n",
       "        0.67450115,  0.79566902,  2.24968346,  2.24968346,  0.18982966,\n",
       "        1.2803405 , -0.29484182,  2.24968346,  0.55333328,  1.03800476,\n",
       "        1.64384411,  0.4321654 ,  0.31099753,  0.67450115,  1.64384411,\n",
       "        1.88617985,  2.4920192 ,  0.67450115,  0.55333328,  0.31099753,\n",
       "        2.24968346,  0.55333328,  0.67450115,  0.18982966,  1.2803405 ,\n",
       "        1.03800476,  1.2803405 , -0.05250608,  1.15917263,  1.03800476,\n",
       "        1.03800476,  0.55333328,  0.79566902,  0.4321654 ,  0.06866179])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dat=(dat-mean)/std\n",
    "dat"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "c77c11e5-f5ee-4d62-a5cb-1c8043a6dc07",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "std=dat.std()\n",
    "std"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "63c3c437-44af-403b-a63f-12f9d816057b",
   "metadata": {},
   "source": [
    "## PCA projuction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "abcbd93e-5c6b-40d5-bc08-c76f99bdc632",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 一键完成标准化\n",
    "x = StandardScaler().fit_transform(iris['data'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "e48d0650-a2ad-436f-8698-a53419b3c294",
   "metadata": {},
   "outputs": [],
   "source": [
    "# number of components:最终维数的数量，用两个维数有效整合了原来四个维度的信息\n",
    "pca = PCA(n_components=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "89560be7-7b80-4e40-86bd-d8c391dd6e1e",
   "metadata": {},
   "outputs": [],
   "source": [
    "#pca.fit(x) 计算 x 数据的主成分，即找到那些方向上数据方差最大的方向\n",
    "#pca.transform(x) 将原始数据 x 投影到这些主成分上，得到新的数据表示\n",
    "#转换后的数据被存储在变量 principalComponents 中\n",
    "\n",
    "principalComponents = pca.fit_transform(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "ef48b557-4108-4207-a9dc-a7ebb2858c32",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>principal component 1</th>\n",
       "      <th>principal component 2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-2.264703</td>\n",
       "      <td>0.480027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-2.080961</td>\n",
       "      <td>-0.674134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-2.364229</td>\n",
       "      <td>-0.341908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-2.299384</td>\n",
       "      <td>-0.597395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-2.389842</td>\n",
       "      <td>0.646835</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   principal component 1  principal component 2\n",
       "0              -2.264703               0.480027\n",
       "1              -2.080961              -0.674134\n",
       "2              -2.364229              -0.341908\n",
       "3              -2.299384              -0.597395\n",
       "4              -2.389842               0.646835"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "principalDf = pd.DataFrame(data = principalComponents\n",
    "             , columns = ['principal component 1', 'principal component 2'])\n",
    "\n",
    "principalDf.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0bb016c4-b0d9-48bd-b39c-3165bd4147fc",
   "metadata": {},
   "source": [
    "## 训练集拆分，训练随机森林模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "07a9d3b2-c0e9-41d5-8201-2cca2616563b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>lris</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>Iris-setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     1    2    3    4         lris\n",
       "0  5.1  3.5  1.4  0.2  Iris-setosa\n",
       "1  4.9  3.0  1.4  0.2  Iris-setosa\n",
       "2  4.7  3.2  1.3  0.2  Iris-setosa\n",
       "3  4.6  3.1  1.5  0.2  Iris-setosa\n",
       "4  5.0  3.6  1.4  0.2  Iris-setosa"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 利用pandas导入csv数据，查看前5行导入结果看是否正常\n",
    "import pandas as pd\n",
    "credit_df = pd.read_csv(\"irisdata.txt\", header=None)\n",
    "#源DataFrame中是没有索引的，此处加上索引\n",
    "new_column_names =['1','2','3','4','lris']\n",
    "credit_df.columns = new_column_names\n",
    "credit_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "9f34cd36-383f-43d7-a2ad-1e58d60b59f3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1    50\n",
       "2    50\n",
       "3    50\n",
       "Name: target, dtype: int64"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 构造目标变量y的数据对象\n",
    "credit_df['target'] = 0\n",
    "credit_df.loc[(credit_df.lris == 'Iris-setosa'), 'target'] = 1\n",
    "credit_df.loc[(credit_df.lris == 'Iris-versicolor'), 'target'] = 2\n",
    "credit_df.loc[(credit_df.lris == 'Iris-virginica'), 'target'] = 3\n",
    "\n",
    "\n",
    "trainData_y = credit_df['target'] \n",
    "# 数值统计\n",
    "trainData_y.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "03449e36-9411-4b6f-ae46-3ea69993abe5",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_test,y_train,y_test  =  train_test_split(principalDf, trainData_y,test_size=0.3, random_state=1024)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "377821f7-f238-41ce-a15d-07f46620a24a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-4 {color: black;background-color: white;}#sk-container-id-4 pre{padding: 0;}#sk-container-id-4 div.sk-toggleable {background-color: white;}#sk-container-id-4 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-4 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-4 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-4 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-4 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-4 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-4 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-4 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-4 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-4 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-4 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-4 div.sk-item {position: relative;z-index: 1;}#sk-container-id-4 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-4 div.sk-item::before, #sk-container-id-4 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-4 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-4 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-4 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-4 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-4 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-4 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-4 div.sk-label-container {text-align: center;}#sk-container-id-4 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-4 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestClassifier()"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "# 通过RandomForestClassifier类定义一个随机森林模型，名字叫rf\n",
    "rf = RandomForestClassifier(n_estimators = 100)\n",
    "\n",
    "# 对lr模型进行训练(fit)\n",
    "rf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "01b78e61-08be-4d31-97f1-a73b6fe159f4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           1       1.00      1.00      1.00        14\n",
      "           2       0.93      0.81      0.87        16\n",
      "           3       0.82      0.93      0.87        15\n",
      "\n",
      "    accuracy                           0.91        45\n",
      "   macro avg       0.92      0.92      0.91        45\n",
      "weighted avg       0.92      0.91      0.91        45\n",
      "\n",
      "[[14  0  0]\n",
      " [ 0 13  3]\n",
      " [ 0  1 14]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import auc\n",
    "\n",
    "# 利用模型对测试集进行预测，输出target预测标签值和概率\n",
    "y_test_pred = rf.predict(X_test)\n",
    "y_test_prob = rf.predict_proba(X_test)\n",
    "\n",
    "# 分类评估汇总报告classification_report\n",
    "print(classification_report(y_test,y_test_pred))\n",
    "\n",
    "# 误分类矩阵 confusion_matrix\n",
    "print(confusion_matrix(y_test,y_test_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4581438e-ff15-4349-bc23-dfb53cd7fd15",
   "metadata": {},
   "source": [
    "## 课堂作业"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "37c26f96-21fd-45a2-89e0-631aa55919c7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Reading in LAMOST data...\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "print(\"Reading in LAMOST data...\")\n",
    "X = np.load('d:/work/homework/data/data/fluxs.npy')\n",
    "y = np.load('d:/work/homework/data/data/sclss.npy')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bfaf5264-9f1b-4f9c-ab98-375a2df051ee",
   "metadata": {},
   "source": [
    "### 折线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "0640ec72-1fef-4683-a81a-c63e04982546",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(700, 3700)"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "4a2bb79b-b39c-4d4d-a675-9d0a828cc5fe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(700,)"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X[:,0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "a5ca5845-299b-47b6-b3a6-cf82aa6ebdec",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(700,)"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "05f2b3c4-0be2-4e2d-871a-1e850e08ee18",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "dba3f323-6b24-4d72-8d1b-8ee6bc7f808f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x18e7d526500>]"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(X[0])\n",
    "plt.plot(X[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fd4659ef-6414-4fe7-8424-74d7c7128a6b",
   "metadata": {},
   "source": [
    "### 随机森林模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "69fce3dc-523a-43b0-97a4-13e8871970e8",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_test,y_train,y_test  =  train_test_split(X, y,test_size=0.3, random_state=1024)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "bc9cb2b9-ef0e-49b6-96cf-2b4e6b2bf242",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-5 {color: black;background-color: white;}#sk-container-id-5 pre{padding: 0;}#sk-container-id-5 div.sk-toggleable {background-color: white;}#sk-container-id-5 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-5 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-5 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-5 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-5 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-5 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-5 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-5 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-5 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-5 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-5 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-5 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-5 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-5 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-5 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-5 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-5 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-5 div.sk-item {position: relative;z-index: 1;}#sk-container-id-5 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-5 div.sk-item::before, #sk-container-id-5 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-5 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-5 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-5 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-5 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-5 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-5 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-5 div.sk-label-container {text-align: center;}#sk-container-id-5 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-5 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-5\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" checked><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestClassifier()"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "# 通过RandomForestClassifier类定义一个随机森林模型，名字叫rf\n",
    "rf = RandomForestClassifier(n_estimators = 100)\n",
    "\n",
    "# 对lr模型进行训练(fit)\n",
    "rf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "d29c7ab3-9828-40ba-8acc-eda165f9a40f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           A       0.85      0.81      0.83        27\n",
      "           B       0.83      0.86      0.85        35\n",
      "           F       0.73      0.61      0.67        31\n",
      "           G       0.83      0.83      0.83        29\n",
      "           K       0.79      0.93      0.86        29\n",
      "           M       1.00      0.89      0.94        27\n",
      "           O       0.86      0.94      0.90        32\n",
      "\n",
      "    accuracy                           0.84       210\n",
      "   macro avg       0.84      0.84      0.84       210\n",
      "weighted avg       0.84      0.84      0.84       210\n",
      "\n",
      "[[22  2  2  0  0  0  1]\n",
      " [ 1 30  0  0  0  0  4]\n",
      " [ 3  3 19  4  2  0  0]\n",
      " [ 0  0  3 24  2  0  0]\n",
      " [ 0  0  1  1 27  0  0]\n",
      " [ 0  0  0  0  3 24  0]\n",
      " [ 0  1  1  0  0  0 30]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import auc\n",
    "\n",
    "# 利用模型对测试集进行预测，输出target预测标签值和概率\n",
    "y_test_pred = rf.predict(X_test)\n",
    "y_test_prob = rf.predict_proba(X_test)\n",
    "\n",
    "# 分类评估汇总报告classification_report\n",
    "print(classification_report(y_test,y_test_pred))\n",
    "\n",
    "# 误分类矩阵 confusion_matrix\n",
    "print(confusion_matrix(y_test,y_test_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "324b08ce-cffc-42e8-996f-25c9f77b351c",
   "metadata": {},
   "source": [
    "# 课后作业(40min)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "e695c6c4-7257-45c7-9d5a-5fdf5ce86b74",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "X_norm = StandardScaler().fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "899e9281-d65b-495f-bbc7-6ade2a55c206",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.6686811  0.26772228 0.03416182 0.0112427  0.00454554 0.0019613 ]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA \n",
    "pca = PCA(n_components=6)\n",
    "X_pca = pca.fit_transform(X_norm)\n",
    "\n",
    "var_ratio = pca.explained_variance_ratio_#计算比例\n",
    "print(var_ratio)\n",
    "\n",
    "#主成分\n",
    "fig2 = plt.figure()\n",
    "plt.bar([1,2,3,4,5,6],var_ratio)\n",
    "plt.xticks([1,2,3,4,5,6])\n",
    "plt.ylabel(\"variance ratio \")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "id": "64597479-f01d-44f6-bad5-3c02beaee7a9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig3 = plt.figure()\n",
    "s1= plt.scatter(X_pca[:,0][y=='O'],X_pca[:,1][y=='O'])\n",
    "s2 = plt.scatter(X_pca[:,0][y=='B'],X_pca[:,1][y=='B'])\n",
    "s3 = plt.scatter(X_pca[:,0][y=='A'],X_pca[:,1][y=='A'])\n",
    "s4 = plt.scatter(X_pca[:,0][y=='F'],X_pca[:,1][y=='F'])\n",
    "s5 = plt.scatter(X_pca[:,0][y=='G'],X_pca[:,1][y=='G'])\n",
    "s6 = plt.scatter(X_pca[:,0][y=='K'],X_pca[:,1][y=='K'])\n",
    "s7 = plt.scatter(X_pca[:,0][y=='M'],X_pca[:,1][y=='M'])\n",
    "plt.legend((s1,s2,s3,s4,s5,s6,s7),('s1','s2','s3','s4','s5','s6','s7'))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "24921bdf-a722-4a3a-9c16-a3071b0e04f1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7964285714285714\n"
     ]
    }
   ],
   "source": [
    "#准确率\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "train, test, trlabel, telabel = train_test_split(X_pca, y, test_size = 0.4, random_state = 42)\n",
    "X_train = train\n",
    "y_train = trlabel\n",
    "X_test = test\n",
    "y_test = telabel\n",
    "\n",
    "\n",
    "KNN = KNeighborsClassifier(n_neighbors=3)\n",
    "KNN.fit(X_train,y_train)\n",
    "y_predict = KNN.predict(X_test)\n",
    "from sklearn.metrics import accuracy_score\n",
    "accuracy = accuracy_score(y_test,y_predict)\n",
    "print(accuracy)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "id": "638c1ea1-8252-45aa-8a55-1f8efe34eb93",
   "metadata": {},
   "outputs": [],
   "source": [
    "# number of components:最终维数的数量，用两个维数有效整合了原来四个维度的信息\n",
    "pca = PCA(n_components=15)\n",
    "\n",
    "#pca.fit(x) 计算 x 数据的主成分，即找到那些方向上数据方差最大的方向\n",
    "#pca.transform(x) 将原始数据 x 投影到这些主成分上，得到新的数据表示\n",
    "#转换后的数据被存储在变量 principalComponents 中\n",
    "\n",
    "principalComponents = pca.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "id": "e9daacc3-8ef8-4081-97c3-ba7ab86910b3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "      <th>14</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-7.762773</td>\n",
       "      <td>-8.188299</td>\n",
       "      <td>2.471211</td>\n",
       "      <td>1.089291</td>\n",
       "      <td>-2.040437</td>\n",
       "      <td>-0.931473</td>\n",
       "      <td>2.518284</td>\n",
       "      <td>-0.440986</td>\n",
       "      <td>0.881683</td>\n",
       "      <td>2.024010</td>\n",
       "      <td>1.036488</td>\n",
       "      <td>-1.457726</td>\n",
       "      <td>3.209351</td>\n",
       "      <td>-0.245351</td>\n",
       "      <td>1.479177</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-10.851151</td>\n",
       "      <td>4.094704</td>\n",
       "      <td>-2.558633</td>\n",
       "      <td>-0.444490</td>\n",
       "      <td>0.506804</td>\n",
       "      <td>-0.236447</td>\n",
       "      <td>0.166946</td>\n",
       "      <td>0.586398</td>\n",
       "      <td>0.080781</td>\n",
       "      <td>-0.071835</td>\n",
       "      <td>0.298276</td>\n",
       "      <td>-0.104462</td>\n",
       "      <td>-0.277107</td>\n",
       "      <td>0.291881</td>\n",
       "      <td>0.117952</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-10.148020</td>\n",
       "      <td>2.565081</td>\n",
       "      <td>-2.777494</td>\n",
       "      <td>-0.393386</td>\n",
       "      <td>0.773267</td>\n",
       "      <td>0.068797</td>\n",
       "      <td>-0.267048</td>\n",
       "      <td>0.134439</td>\n",
       "      <td>0.542406</td>\n",
       "      <td>-0.300938</td>\n",
       "      <td>0.372959</td>\n",
       "      <td>-0.598846</td>\n",
       "      <td>-0.563237</td>\n",
       "      <td>0.129820</td>\n",
       "      <td>0.586499</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>17.094683</td>\n",
       "      <td>6.508274</td>\n",
       "      <td>1.769199</td>\n",
       "      <td>2.395819</td>\n",
       "      <td>1.125333</td>\n",
       "      <td>-0.717890</td>\n",
       "      <td>0.063927</td>\n",
       "      <td>0.436536</td>\n",
       "      <td>-0.302129</td>\n",
       "      <td>0.174002</td>\n",
       "      <td>-0.442406</td>\n",
       "      <td>-0.100029</td>\n",
       "      <td>0.333039</td>\n",
       "      <td>-0.021326</td>\n",
       "      <td>0.212524</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-5.225841</td>\n",
       "      <td>1.237989</td>\n",
       "      <td>-1.586887</td>\n",
       "      <td>-0.502145</td>\n",
       "      <td>-0.066862</td>\n",
       "      <td>-0.427361</td>\n",
       "      <td>0.080287</td>\n",
       "      <td>0.147066</td>\n",
       "      <td>-0.435458</td>\n",
       "      <td>-0.076888</td>\n",
       "      <td>0.074226</td>\n",
       "      <td>0.166254</td>\n",
       "      <td>0.109754</td>\n",
       "      <td>0.104749</td>\n",
       "      <td>0.020810</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2         3         4         5         6   \\\n",
       "0  -7.762773 -8.188299  2.471211  1.089291 -2.040437 -0.931473  2.518284   \n",
       "1 -10.851151  4.094704 -2.558633 -0.444490  0.506804 -0.236447  0.166946   \n",
       "2 -10.148020  2.565081 -2.777494 -0.393386  0.773267  0.068797 -0.267048   \n",
       "3  17.094683  6.508274  1.769199  2.395819  1.125333 -0.717890  0.063927   \n",
       "4  -5.225841  1.237989 -1.586887 -0.502145 -0.066862 -0.427361  0.080287   \n",
       "\n",
       "         7         8         9         10        11        12        13  \\\n",
       "0 -0.440986  0.881683  2.024010  1.036488 -1.457726  3.209351 -0.245351   \n",
       "1  0.586398  0.080781 -0.071835  0.298276 -0.104462 -0.277107  0.291881   \n",
       "2  0.134439  0.542406 -0.300938  0.372959 -0.598846 -0.563237  0.129820   \n",
       "3  0.436536 -0.302129  0.174002 -0.442406 -0.100029  0.333039 -0.021326   \n",
       "4  0.147066 -0.435458 -0.076888  0.074226  0.166254  0.109754  0.104749   \n",
       "\n",
       "         14  \n",
       "0  1.479177  \n",
       "1  0.117952  \n",
       "2  0.586499  \n",
       "3  0.212524  \n",
       "4  0.020810  "
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "principalDf = pd.DataFrame(data = principalComponents)\n",
    "\n",
    "principalDf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "id": "09bba0ac-e149-433b-a011-91b6727cddb3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(700, 15)"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "principalDf.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "id": "ba55e4cd-8b7f-4f4b-9abe-da0a69102c84",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(150,)"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainData_y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "id": "a0e43095-1dba-4fbb-a694-bd80aa2786c1",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_test,y_train,y_test  =  train_test_split(principalDf, y,test_size=0.3, random_state=1024)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "id": "d2e79f5e-f88f-4425-ad36-54bf564e584f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-7 {color: black;background-color: white;}#sk-container-id-7 pre{padding: 0;}#sk-container-id-7 div.sk-toggleable {background-color: white;}#sk-container-id-7 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-7 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-7 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-7 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-7 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-7 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-7 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-7 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-7 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-7 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-7 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-7 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-7 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-7 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-7 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-7 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-7 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-7 div.sk-item {position: relative;z-index: 1;}#sk-container-id-7 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-7 div.sk-item::before, #sk-container-id-7 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-7 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-7 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-7 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-7 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-7 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-7 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-7 div.sk-label-container {text-align: center;}#sk-container-id-7 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-7 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-7\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" checked><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestClassifier()"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "# 通过RandomForestClassifier类定义一个随机森林模型，名字叫rf\n",
    "rf = RandomForestClassifier(n_estimators = 100)\n",
    "\n",
    "# 对lr模型进行训练(fit)\n",
    "rf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "id": "2c40a12c-1ee0-4828-b01e-0b1e7f960f4f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           A       0.88      0.85      0.87        27\n",
      "           B       0.97      0.86      0.91        35\n",
      "           F       0.74      0.84      0.79        31\n",
      "           G       0.96      0.90      0.93        29\n",
      "           K       0.90      0.93      0.92        29\n",
      "           M       1.00      0.93      0.96        27\n",
      "           O       0.89      1.00      0.94        32\n",
      "\n",
      "    accuracy                           0.90       210\n",
      "   macro avg       0.91      0.90      0.90       210\n",
      "weighted avg       0.91      0.90      0.90       210\n",
      "\n",
      "[[23  0  3  0  0  0  1]\n",
      " [ 2 30  1  0  0  0  2]\n",
      " [ 1  1 26  1  2  0  0]\n",
      " [ 0  0  3 26  0  0  0]\n",
      " [ 0  0  1  0 27  0  1]\n",
      " [ 0  0  1  0  1 25  0]\n",
      " [ 0  0  0  0  0  0 32]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import auc\n",
    "\n",
    "# 利用模型对测试集进行预测，输出target预测标签值和概率\n",
    "y_test_pred = rf.predict(X_test)\n",
    "y_test_prob = rf.predict_proba(X_test)\n",
    "\n",
    "# 分类评估汇总报告classification_report\n",
    "print(classification_report(y_test,y_test_pred))\n",
    "\n",
    "# 误分类矩阵 confusion_matrix\n",
    "print(confusion_matrix(y_test,y_test_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2642f5b3-f5fc-4692-b877-0887c3d8c39d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "id": "99143725-8b0b-4486-ae66-a4957babd6b6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'criterion': 'gini', 'max_features': 4, 'n_estimators': 200}"
      ]
     },
     "execution_count": 155,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# grid search调参\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "parameters = {\n",
    "    'n_estimators':[50,100,150,200],\n",
    "    'max_features':[1,2,3,4,5,6,7],\n",
    "    'criterion':['gini','entropy']\n",
    "}\n",
    "\n",
    "rf_search = GridSearchCV(rf, parameters, scoring='accuracy', cv=5)\n",
    "rf_search.fit(X_train, y_train)\n",
    "\n",
    "#查看最佳结果\n",
    "rf_search.best_estimator_\n",
    "rf_search.best_score_\n",
    "rf_search.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "id": "a69e2327-4c46-4ca0-a68d-086b03040c7f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           A       0.88      0.85      0.87        27\n",
      "           B       0.97      0.86      0.91        35\n",
      "           F       0.74      0.84      0.79        31\n",
      "           G       0.96      0.93      0.95        29\n",
      "           K       0.90      0.93      0.92        29\n",
      "           M       1.00      0.93      0.96        27\n",
      "           O       0.91      1.00      0.96        32\n",
      "\n",
      "    accuracy                           0.90       210\n",
      "   macro avg       0.91      0.91      0.91       210\n",
      "weighted avg       0.91      0.90      0.91       210\n",
      "\n",
      "[[23  0  3  0  0  0  1]\n",
      " [ 2 30  2  0  0  0  1]\n",
      " [ 1  1 26  1  2  0  0]\n",
      " [ 0  0  2 27  0  0  0]\n",
      " [ 0  0  1  0 27  0  1]\n",
      " [ 0  0  1  0  1 25  0]\n",
      " [ 0  0  0  0  0  0 32]]\n"
     ]
    }
   ],
   "source": [
    "#### from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import roc_curve\n",
    "from sklearn.metrics import auc\n",
    "\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "# 通过RandomForestClassifier类定义一个随机森林模型，名字叫rf\n",
    "rf_1 = RandomForestClassifier(criterion ='gini', max_features=4, n_estimators=200)\n",
    "# 对模型进行训练(fit)\n",
    "rf_1.fit(X_train, y_train)\n",
    "\n",
    "\n",
    "\n",
    "# 利用模型对测试集进行预测，输出target预测标签值和概率\n",
    "y_test_pred = rf_1.predict(X_test)\n",
    "y_test_prob = rf_1.predict_proba(X_test)\n",
    "\n",
    "# 分类评估汇总报告classification_report\n",
    "print(classification_report(y_test,y_test_pred))\n",
    "\n",
    "# 误分类矩阵 confusion_matrix\n",
    "print(confusion_matrix(y_test,y_test_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a9092846-fff5-4eeb-a050-17b3339b52df",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
